#include <Arduino.h>

#include <Wire.h>
#include <U8g2lib.h>
#include <Adafruit_GFX.h>

// 使用 I2C 接口初始化 U8g2，屏幕宽度和高度为 128x64
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ 22, /* data=*/ 21);

// 字体选择（使用支持中文的字体）
// 这里选择了 'u8g2_font_unifont_t_chinese2' 字体，它支持部分中文字符

void setup() {
  // 初始化屏幕
  u8g2.begin();

  // 清屏并设置字体
  u8g2.clearBuffer();
//   u8g2.setFont(u8g2_font_ncenB08_tr);  // 设置字体
//   u8g2.drawStr(0, 10, "Hello, ESP32!"); // 在 (0, 10) 位置显示文本

  // 显示中文字符（需要支持中文的字体）
  u8g2.setFont(u8g2_font_wqy13_t_gb2312);
  u8g2.drawUTF8(0, 30, "我永远爱王静!");

  // 画一个矩形
//   u8g2.drawBox(20, 40, 50, 10);

  // 刷新显示内容
  u8g2.sendBuffer();
}

void loop() {
  // 在此处执行你的代码
}




// #include <Wire.h>
// #include <WiFi.h>               // 引入 WiFi 庂
// #include <NTPClient.h>           // 引入 NTPClient 库
// #include <WiFiUdp.h>             // 引入 WiFi UDP 库
// #include <Adafruit_GFX.h>        // 引入 Adafruit GFX 库
// #include <Adafruit_SSD1306.h>    // 引入 Adafruit SSD1306 库
// #include <TimeLib.h>             // 引入 TimeLib 库

// #define SCREEN_WIDTH 128         // OLED 屏幕宽度
// #define SCREEN_HEIGHT 64         // OLED 屏幕高度
// #define OLED_RESET    -1         // OLED 屏幕重置引脚，没有可以设置为 -1

// // 创建 OLED 显示对象
// Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// // Wi-Fi 配置
// const char* ssid     = "xiaomiwifi";      // 你的 Wi-Fi 网络名
// const char* password = "xayn@1216@ynxa";  // 你的 Wi-Fi 密码

// // 设置 NTP 客户端
// WiFiUDP udp;
// NTPClient timeClient(udp, "pool.ntp.org", 0, 3600000); // 获取 UTC 时间，更新时间间隔 1小时（3600000毫秒）

// void setup() {
//   // 启动串口，用于调试
//   Serial.begin(115200);

//   // 初始化 OLED 屏幕
//   if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
//     Serial.println(F("SSD1306 allocation failed"));
//     for (;;);  // 初始化失败时停在这里
//   }
//   display.clearDisplay();  // 清空屏幕

//   // 连接 Wi-Fi
//   Serial.println("Connecting to Wi-Fi...");
//   WiFi.begin(ssid, password);
//   while (WiFi.status() != WL_CONNECTED) {
//     delay(500);
//     Serial.print(".");
//   }
//   Serial.println("Connected to Wi-Fi!");

//   // 启动 NTP 客户端
//   timeClient.begin();
//   timeClient.update();  // 获取初始时间
// }

// void loop() {
//   timeClient.update();  // 更新 NTP 时间

//   // 获取时间戳（epoch 时间）
//   unsigned long epochTime = timeClient.getEpochTime();

//   // 使用 TimeLib 解析时间
//   setTime(epochTime);  // 设置系统时间

//   // 获取当前的年、月、日、星期、时、分、秒
//   int hours = hour() + 8; // 获取小时，并转换为北京时间 (UTC + 8)
//   int minutes = minute();
//   int seconds = second();

//   // 处理时钟溢出（如果小时数超过 24）
//   if (hours >= 24) {
//     hours -= 24;
//   }

//   // 获取星期几
//   String weekDay = dayStr(weekday());  // 获取星期几

//   // 显示日期、星期和时间
//   display.clearDisplay();
//   display.setTextSize(3);       // 设置字体大小为 1
//   display.setTextColor(SSD1306_WHITE);  // 设置字体颜色为白色
//   display.setCursor(0, 0);      // 设置光标位置

//   // 显示时间：时:分:秒
//   display.print(hours);
//   display.print(":");
//   if (minutes < 10) display.print("0"); // 如果分钟数小于 10，前面补零
//   display.print(minutes);
//   display.print(":");
//   if (seconds < 10) display.print("0"); // 如果秒数小于 10，前面补零
//   display.println(seconds);

//   display.println(weekDay);

//   display.display();  // 刷新 OLED 显示内容

//   delay(1000);  // 每秒更新一次
// }





// #include <Wire.h>                   // 引入 Wire 库，I2C 通信
// #include <Adafruit_GFX.h>            // 引入 Adafruit GFX 库，用于图形绘制
// #include <Adafruit_SSD1306.h>        // 引入 SSD1306 屏幕驱动库

// // OLED 屏幕宽度和高度
// #define SCREEN_WIDTH 128
// #define SCREEN_HEIGHT 64
// #define OLED_RESET    -1
// Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);  // 创建显示屏对象

// void setup() {
//   // 初始化显示屏
//   if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
//     Serial.println(F("SSD1306 allocation failed"));
//     for (;;);  // 初始化失败时停在这里
//   }

//   display.clearDisplay();  // 清除屏幕

//   display.setTextSize(2);   // 设置文本大小为 2，表示文字较大
//   display.setTextColor(SSD1306_WHITE); // 设置文本颜色为白色

//   // 获取文本的边界（宽度和高度）
//   int16_t x, y;
//   uint16_t textWidth, textHeight;
//   display.getTextBounds(F("Mr Liu!"), 0, 0, &x, &y, &textWidth, &textHeight);

//   // 计算水平和垂直居中
//   int xPos = (SCREEN_WIDTH - textWidth) / 2;  // 水平居中
//   int yPos = (SCREEN_HEIGHT - textHeight) / 2; // 垂直居中

//   // 设置光标位置
//   display.setCursor(xPos, yPos);

//   // 输出文本
//   display.println(F("Mr Liu!"));
//   display.display();  // 更新显示
// }

// void loop() {
//   // 空的 loop 函数
// }
